#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>

//ADD:

//void GetRead(int* num, int* len)
//{
//	char s[505] = { 0 };
//	int i = 0, j = 0;
//	gets(s);
//	*len = strlen(s);
//	for (i = 0, j = *len - 1; j >= 0; i++, j--)
//	{
//		num[i] = s[j] - '0';
//	}
//}
//
//void DataADD(int* a, int* b, int *ans,int lena, int lenb, int* lenans)
//{
//	*lenans = lena > lenb ? lena : lenb;
//	int t = 0, i = 0;
//	for (i = 0; i < *lenans; i++)
//	{
//		ans[i] = a[i] + b[i] + t;
//		t = 0;
//		if (ans[i] >= 10)
//		{
//			t = 1;
//			ans[i] %= 10;
//		}
//	}
//	if (t == 1)
//	{
//		(*lenans)++;
//		ans[*lenans - 1] = 1;
//	}
//}
//
//void DataPrint(int* ans, int lenans)
//{
//	int i = 0;
//	while (ans[lenans - 1] == 0 && lenans > 0)
//	{
//		lenans--;
//	}
//	for (i = lenans-1; i >= 0; i--)
//	{
//		printf("%d", ans[i]);
//	}
//}
//
//int main()
//{
//	int a[500] = { 0 }, b[500] = {0}, ans[505] = { 0 }, lena = 0, lenb = 0, lenans = 0;
//	GetRead(a, &lena);
//	GetRead(b, &lenb);
//	DataADD(a, b,ans,lena, lenb, &lenans);
//	DataPrint(ans, lenans);
//	return 0;
//}


//SUB:

//void GetData(int* a, char* b, int len)
//{
//	int i = 0, j = 0;
//	for (i = 0, j = len - 1; j >= 0; i++, j--)
//	{
//		a[i] = b[j] - '0';
//	}
//
//}
//
//void DataCalculate(int* a, int* b, int *ans,int len)
//{
//	int i = 0;
//	for (i = 0; i < len; i++)
//	{
//		if (b[i] > a[i])
//		{
//			--a[i + 1];
//			a[i] += 10;
//		}
//		ans[i] = a[i] - b[i];
//	}
//}
//
//void AnsPrint(int* ans, int len)
//{
//	for (int i = len - 1; i >= 0; i--)
//	{
//		if (ans[i] == 0 && len > 1)
//		{
//			len--;
//		}
//		else
//		{
//			break;
//		}
//	}
//
//	for (int i = len - 1; i >= 0; i--)
//	{
//		printf("%d", ans[i]);
//	}
//}
//
//int main()
//{
//	int a1[500] = { 0 }, b1[500] = { 0 }, ans[500] = { 0 }, lena = 0, lenb = 0, lenans = 0;
//	char a2[500] = { 0 }, b2[500] = { 0 }, t[500] = { 0 };
//	scanf("%s %s", a2, b2);
//	lena = strlen(a2), lenb = strlen(b2);
//	if ((lena < lenb) || (lena == lenb) && strcmp(a2, b2) < 0)
//	{
//		printf("-");
//		strcpy(t, a2);
//		strcpy(a2, b2);
//		strcpy(b2, t);
//		lena = strlen(b2);
//		lenb = strlen(a2);
//	}
//	GetData(a1, a2, lena);
//	GetData(b1, b2, lenb);
//	DataCalculate(a1, b1, ans, lena);
//	AnsPrint(ans, lena);
//	return 0;
//}

//void GetData(int* num, int* len)
//{
//	char s[500] = { 0 };
//	int i = 0, j = 0;
//	gets(s);
//	*len = strlen(s);
//	for (i = 0, j = *len - 1; j >= 0; i++, j--)
//	{
//		num[i] = s[j] - '0';
//	}
//}
//
//void DataPlus(int* a, int* b, int* ans, int lena,int lenb,int lenans)
//{
//	int i = 0, j = 0,t = 0;
//	for (i = 0; i < lena; i++)
//	{
//		for (j = 0; j < lenb; j++)
//		{
//			ans[i + j] += a[i] * b[j];
//		}
//	}
//	for (i = 0; i < lenans; i++)
//	{
//		ans[i] += t;
//		t = ans[i] / 10;
//		ans[i] %= 10;
//	}
//}
//
//void AnsPrint(int* ans, int len)
//{
//	while (ans[len] == 0 && len > 0)
//	{
//		--len;
//	}
//	for (int i = len; i >= 0; i--)
//	{
//		printf("%d", ans[i]);
//	}
//}
//
//int main()
//{
//	int a[500] = { 0 },b[500] = { 0 }, ans[1050] = { 0 }, lena = 0, lenb = 0, lenans = 0;
//	GetData(a, &lena);
//	GetData(b, &lenb);
//	lenans = lena + lenb;
//	DataPlus(a, b, ans, lena, lenb, lenans);
//	AnsPrint(ans, lenans);
//	return 0;
//}

//char* reverseOnlyLetters(char* s)
//{
//    char* cur = s, * l = s, * r = s, t = 0;
//    int len = 0;
//    while (*cur)
//    {
//        len++;
//        cur++;
//    }
//    r = s + len - 1;
//    while (l < r)
//    {
//        if (isalpha(*l)&& isalpha(*r))
//        {
//            t = *r;
//            *r = *l;
//            *l = t;
//            l++;
//            r--;
//            continue;
//        }
//        if(isalpha(*l))
//        {
//            r--;
//        }
//        else if(isalpha(*r))
//        {
//            l++;
//        }
//        else
//        {
//            r--;
//            l++;
//        }
//    }
//    return s;
//}
//
//int main()
//{
//	char s[100] = { 0 };
//	gets(s);
//    reverseOnlyLetters(s);
//}